﻿namespace calendar
{
    internal class Program
    {
        static void Main(string[] args)
        {   
            //设置变量存储当前时间
            DateTime date = DateTime.Now;                               
            //获取当前年
            int year = date.Year;
            //当前年份的第一天，即变量定到1月1号
            DateTime date1 = new DateTime(year, 1, 1);
            int x = 0;
            int y = 0;
            
            //设置变量为终止条件
            while (date1.Year == year)
            {    
                //每个月份表头的位置
                int a = (date1.Month - 1) % 3 * 32;
                int b = (date1.Month - 1) / 3 * 10;                                     
                //1号不一样 .day=1开始输出两排 
                if (date1.Day == 1)
                {
                    y = 0;
                    Console.SetCursorPosition(x + 10 + a , y + b );
                    Console.WriteLine( date1.Month + "月");                   
                    Console.SetCursorPosition(x + a  , y + b +1);
                    Console.WriteLine("日  一  二  三  四  五  六");
                    
                }      
                //类型转换 每个日期对应星期几
                int dayofweek = (int)date1.DayOfWeek;
                //当周日时，则纵坐标加一
                if ((int)date1.DayOfWeek == 0)
                    y++;
                //找到每个日期对应坐标并输出
                Console.SetCursorPosition(x + 4 * dayofweek + a, y + 2 + b );                
                Console.Write(date1.Day);                
                date1 = date1.AddDays(1);              
            }
            //为了不让最后一行被挡
            Console.ReadLine();
        }
    }
}